我在网上查找了一些SO讨论和ActiveState配方,用于运行一些超时的代码。看起来有一些常见的方法:使用运行代码的线程,并在超时的情况下加入。如果超时-杀死线程。这在Python中不直接支持(使用私有(private)_Thread__stop函数),因此这是不好的做法使用signal.SIGALRM-但这种方法不适用于Windows!使用超时的子进程-但这太重了-如果我想经常启动可中断的任务怎么办,我不想为每个进程触发!那么,什么是正确的方法?我不是在问解决方法(例如使用Twisted和异步IO),而是解决实际问题的实际方法——我有一些功能,我只想在超时的情况下运行它。如果超时,
我有以下已使用大约一年的代码:importurllib2req=urllib2.Request('https://somewhere.com','')data=urllib2.urlopen(req)printdata.read()最近,出现了一些随机错误:urllib2.URLError:失败的原因是:Traceback(mostrecentcalllast):File"test.py",line4,indata=urllib2.urlopen(req).read()File"/usr/lib/python2.7/urllib2.py",line126,inurlopenreturn
urllib2documentation表示timeout参数是在Python2.6中添加的。不幸的是,我的代码库一直在Python2.5和2.4平台上运行。是否有任何替代方法来模拟超时?我要做的就是让代码与远程服务器通话一段固定的时间。也许有任何替代的内置库?(不想安装3rd方,比如pycurl) 最佳答案 您可以使用以下方法为所有套接字操作(包括HTTP请求)设置全局超时:socket.setdefaulttimeout()像这样:importurllib2importsocketsocket.setdefaulttimeout
这个问题在这里已经有了答案:Keyboardinputwithtimeout?(26个回答)关闭7年前。我想做一个raw_input('Entersomething:.')。我希望它休眠3秒,如果没有输入,则取消提示并运行其余代码。然后代码循环并再次实现raw_input。如果用户输入“q”之类的内容,我也希望它中断。 最佳答案 有一个不使用线程的简单解决方案(至少不明确):使用select知道什么时候可以从标准输入读取内容:importsysfromselectimportselecttimeout=10print"Enterso
我正在使用sqlalchemy和MySQL,并使用sql表达式执行查询。当执行多个查询时,它会超时。我找到了answer但我不清楚。请问有谁可以帮帮我吗?TimeoutError:QueuePoollimitofsize5overflow10reached,connectiontimedout,timeout30 最佳答案 每当您在代码中创建新session时,请务必关闭它。只需调用session.close()当我收到此错误时,我以为我正在关闭所有session,但我仔细查看后发现有一种新方法我没有。以该方法关闭session为我
我在很多论坛上都看到过这个问题,但没有一个能解决我的问题。我正在尝试将示例文档插入MongoDBDB。不幸的是,在插入过程中colReceived.insert(doc)我得到了以下错误:SEVERE:Servlet.service()forservletspringthrewexceptioncom.mongodb.MongoTimeoutException:Timedoutafter30000mswhilewaitingforaserverthatmatchesWritableServerSelector.Clientviewofclusterstateis{type=UNKNOW
我在很多论坛上都看到过这个问题,但没有一个能解决我的问题。我正在尝试将示例文档插入MongoDBDB。不幸的是,在插入过程中colReceived.insert(doc)我得到了以下错误:SEVERE:Servlet.service()forservletspringthrewexceptioncom.mongodb.MongoTimeoutException:Timedoutafter30000mswhilewaitingforaserverthatmatchesWritableServerSelector.Clientviewofclusterstateis{type=UNKNOW
fromdatetimeimportdatetimefromelasticsearchimportElasticsearches=Elasticsearch()doc={'author':'kimchy','text':'Elasticsearch:cool.bonsaicool.','timestamp':datetime(2010,10,10,10,10,10)}res=es.index(index="test-index",doc_type='tweet',id=1,body=doc)print(res['created'])此简单代码返回以下错误:elasticsearch.e
我在urllib2的urlopen中使用timeout参数。urllib2.urlopen('http://www.example.org',timeout=1)我如何告诉Python如果超时到期,应该引发自定义错误?有什么想法吗? 最佳答案 在极少数情况下您想使用except:。这样做会捕获any异常,这可能很难调试,它会捕获异常,包括SystemExit和KeyboardInterupt,这会使您的程序烦人使用..在最简单的情况下,您会捕获urllib2.URLError:try:urllib2.urlopen("http://
我正在使用flask建立一个网站,用户拥有帐户并能够登录。我正在使用flask主体进行部分登录和角色管理。有没有办法让用户的session在5分钟或10分钟后过期?我无法在flask文档或flask主体的文档中找到它。我想到了一种手动操作的方法,在登录时设置一个带有时间标签的变量服务器端,并且在用户采取的下一个操作时,服务器验证该时间戳上的时间增量并删除session。 最佳答案 除非您有永久session,否则一旦您关闭浏览器,flasksession就会过期。您可以尝试以下方法:fromdatetimeimporttimedel